SPSS FILTER 快速简易教程
作者:Ruben Geert van den Berg,归档于 Basics 和 SPSS A-Z
SPSS FILTER(SPSS 筛选)功能可以临时从所有数据分析中排除一部分个案。如果要从数据_编辑_中排除个案,请改用 DO IF 或 IF。
快速概览
- SPSS 筛选基础
- 示例 1 - 排除具有多个缺失值的个案
- 示例 2 - 基于 2 个变量进行筛选
- 示例 3 - 不使用筛选变量进行筛选
- 技巧 - 具有内置筛选器的命令
- 警告 - 使用筛选器进行数据编辑
SPSS FILTER - 示例数据
在本教程的所有示例中,我将使用 bank_clean.sav 文件(如下所示)。此文件包含小型银行员工调查的数据。您可以随意下载这些数据并自行重新运行示例。
SPSS 筛选基础
在 SPSS 中进行筛选通常涉及 4 个步骤:
- 创建一个筛选变量(filter variable);
- 激活筛选变量;
- 运行一个或多个分析,例如 相关性分析(correlations)、方差分析(ANOVA)或 卡方检验(chi-square test),并使筛选变量生效;
- 停用筛选变量。
理论上,_任何_变量都可以用作筛选变量。激活后,在筛选变量上具有以下值的个案将被排除在所有分析之外,直到您停用筛选器:
- 零值(zeroes)
- 用户缺失值(user missing values)
- 系统缺失值(system missing values)
为了清楚起见,我建议您仅使用包含 0 或 1 的筛选变量来筛选_每个_个案。理论够了,让我们开始实践。
示例 1 - 排除具有多个缺失值的个案
在数据的末尾,我们找到 9 个评定量表:q1 到 q9。也许我们想对它们运行 因子分析(factor analysis),或者将它们用作 回归分析(regression analysis)中的预测变量。在任何情况下,我们可能都想排除在这些变量上具有多个缺失值的个案。我们将首先通过运行以下 语法(syntax)来计算它们的数量。
***创建新变量,用于保存 q1 到 q9 的缺失值数量。
COMPUTE mis_1 = NMISS(q1 TO q9).
***应用变量标签。
VARIABLE LABELS mis_1 'Number of missings on q1 to q9'.
***检查频率。
FREQUENCIES mis_1.
结果
基于此频率分布,我们决定排除在 q1 到 q9 上具有 3 个或更多缺失值的 8 个个案。我们将使用一个简单的 RECODE(重新编码)来创建筛选变量,如下所示。
***将 mis_1 重新编码为筛选变量。
RECODE mis_1 (LO THRU 2 = 1)(ELSE = 0) INTO filt_1.
***应用变量标签。
VARIABLE LABELS filt_1 'Filter out cases with 3 or more missings on q1 to q9'.
***激活筛选变量。
FILTER BY filt_1.
***重新检查 q1 到 q9 的缺失值数量。
FREQUENCIES mis_1.
结果
请注意,SPSS 现在报告 456 个案例,而不是 464 个案例。 具有 3 个或更多缺失值的 8 个案例仍然在我们的数据中,但它们已从所有分析中排除。 我们可以在数据视图中看到原因,如下所示。
个案 21 在 q1 到 q9 上有 8 个缺失值,我们将其重新编码为筛选变量上的零。
其 $casenum 上的删除线表明个案 21 当前已被筛选掉。
状态栏确认筛选变量已生效。 最后,让我们通过简单地运行 FILTER OFF 来停用我们的筛选器。 我们会将筛选变量 filt_1 留在数据中。 它不会以任何方式打扰我们。
示例 2 - 基于 2 个变量进行筛选
对于某些其他分析,我们只想使用在销售或市场部门工作的女性受访者。 一个好的起点是运行一个非常简单的列联表,如下所示。
***在后续输出表中显示值和值标签。
SET TNUMBERS BOTH.
***显示每种性别的职务类型频率。
CROSSTABS gender BY jtype.
结果
如我们的表格所示,我们有 181 名在销售或市场部门工作的女性受访者。 现在,我们将创建一个新的筛选变量,仅包含零。 然后,我们将使用一个简单的 IF 命令将其设置为 1,用于我们的案例选择。
***创建仅包含零的筛选变量。
COMPUTE filt_2 = 0.
***将筛选器设置为 1,用于职务类型为 1 和 2 的女性。
IF(gender = 0 & jtype <= 2) filt_2 = 1.
***应用变量标签。
VARIABLE LABELS filt_2 'Filter in females working in sales and marketing'.
***激活筛选器。
FILTER BY filt_2.
***确认筛选器正常工作。
CROSSTABS gender BY jtype.
重新运行我们的列联表(未显示)确认 SPSS 现在仅报告在营销或销售部门工作的 181 名女性案例。 另请注意,我们现在在数据中有 2 个筛选变量,这很好,但任何时候只能激活 1 个筛选变量。 好的。 让我们也使用 FILTER OFF 停用我们的新筛选变量。
示例 3 - 不使用筛选变量进行筛选
经验丰富的 SPSS 用户可能知道:
- TEMPORARY 可以“撤消”随后的一些数据编辑,并且
- SELECT IF 会永久从您的数据中删除案例。
通过将它们组合起来,您可以避免创建筛选变量的需要,但一次只能进行 1 个分析。 以下示例显示了这一点:第一个 CROSSTABS 仅限于案例选择,但也回滚了我们的案例删除。 因此,第二个 CROSSTABS 再次包括所有案例。
***使以下转换成为临时的。
TEMPORARY.
***删除案例,除非 gender = 1 & jtype = 3。
SELECT IF (gender = 1 & jtype = 3).
***交叉表仅包括 IT 部门的男性,并回滚案例选择。
CROSSTABS gender BY jtype.
***交叉表再次包括所有案例。
CROSSTABS gender BY jtype.
提示 - 具有内置筛选器的命令
您可能想知道的另一件事是,某些命令具有内置筛选器。 这些是
- REGRESSION(回归),
- LOGISTIC REGRESSION(逻辑回归),
- FACTOR(因子)和
- DISCRIMINANT(判别)。
该对话框建议您可以仅基于 1 个变量来筛选案例(仅适用于此命令)。 我怀疑您也可以在生成的 /SELECT 子命令上输入更复杂的条件。 我没有尝试过。
在任何情况下,我认为这些内置筛选器可能非常方便,并且我有点困惑它们仅限于上述 4 个命令。
警告 - 使用筛选器进行数据编辑
SPSS 中的大多数数据编辑不受筛选的影响。 例如,计算变量的均值(computing means)对于变量(如以下所示)会影响_所有_案例,无论激活了哪个筛选器。 因此,我们需要 DO IF 或 IF 将此转换限制为案例选择。 但是,活动的筛选器_确实_会影响_跨案例_的函数。 我们将在下面演示的一些示例是:
受筛选器影响的 SPSS 数据编辑示例
***重新激活女性销售筛选器。
FILTER BY filt_2.
***不受筛选器影响:将 q1 到 q9 的均值添加到数据。
COMPUTE mean_1 = MEAN(q1 TO q9).
EXECUTE.
***受筛选器影响:将案例计数添加到数据。
AGGREGATE OUTFILE * MODE ADDVARIABLES
/ofreq = N.
***受筛选器影响:将工资 Z 分数添加到数据。
DESCRIPTIVES salary
/SAVE.
***受筛选器影响:将中位数组工资添加到数据。
RANK salary
/NTILES(2) INTO med_salary.
结果
好吧。 这几乎就是关于 SPSS 中筛选的所有内容。 希望您觉得本教程有帮助。